package chen.nf.pay;

import java.util.ServiceLoader;

/**
 * @Author czl
 * @Date 2024-05-07
 */
public class PaymentService {

    /**
     * 声明SPI
     */
    private final ServiceLoader<Payment> loader;

    /**
     *初始化SPI
     */
    public PaymentService() {
        loader=ServiceLoader.load(Payment.class);
    }

    /**
     * 支付逻辑
     * @param paymentPay 支付类型（微信，支付宝，银联）
     */
    public void pay(String paymentPay){
        loader.forEach(payment -> {
            //如果支持当前的支付类型则执行支付
            if(payment.supports(paymentPay)){
                payment.pay();
            }
        });
    }
}
